Paginarea
Pentru evitarea unor probleme de alocare specifice segmentelor de lungime variabila intregul spatiu de memorie se partitioneaza in blocuri de dimensiuni egale, numite pagini.
Solutia are importante consecinte in ceea ce priveste relatia programatorului cu spatiul de adrese, intrucit paginarea elimina legatura intre organizarea logica a programului si paginile de memorie. Singurele componente care iau in considerare partitionarea spatiului programului in pagini sint cele ale mecanismului de gestiune a memoriei. In mod analog, memoria fizica este privita ca un set de blocuri, fiecare din ele avind dimensiunea unei pagini, fapt ce permite stocarea unei pagini intr un bloc de memorie. Ca si in cazul segmentarii, nu este necesara alocarea de blocuri contigue de memorie pentru pagini contigue ale programului.
Alocarea unui program in memoria unui sistem functionind in regim de multiprogramare: Paginile, ca si segmentele, pot fi partial stocate in memoria principala a sistemului. Cind se face o referire la o adresa virtuala dintr o pagina ce nu se afla in memoria primara, mecanismul de paginare copiaza intr un bloc intrega pagina continind adresa mentionata. Mecanismul se numeste "cerere de pagini" (demand paging), intrucit paginile sint aduse in memorie cind sint solicitate de catre program.
In decursul timpului s au dezvoltat mai multe tehnici de paginare, care pot fi grupate dupa cum urmeaza:
a)mecanisme care determina momentul la care o pagina trebuie copiata in memoria principala. Cea mai des utilizata tehnica este cea bazata pe cererea de pagini, utilizata de catre MMU ale unor microprocesoare moderne. S au elaborat si alte metode, care incearca predictia comportarii programului si incarca in memorie paginile presupuse a fi utilizate de catre acesta in viitorul apropiat;
b)mecanisme (sau tehnici de inlocuire) care folosesc algoritmi de selectare a paginilor existente in memorie ce pot fi evacuate, eliberind, astfel, spatiul pentru alte pagini;
c)mecanisme ce folosesc un algoritm de determinare a cresterii / descresterii numarului de blocuri de memorie folosite de un anumit program.
   
1. Suportul hardware al mecanismului de paginare.
Mecanismele hardware necesare pentru o implementare eficienta a paginarii sint foarte apropiate de cele folosite pentru segmentare. Principala caracteristica este legata de posibilitatea de testare a adresei virtuale emise de catre CPU pentru a determina daca pagina care o contine se afla sau nu in memoria principala.
Aceasta functie se poate realiza cu ajutorul descriptorilor de pagina. Descriptorul de pagina este similar cu cele de segment, principala diferenta constind din absenta cimpului limita, deoarece paginile au o lungime fixa, egala, adesea, cu o putere a lui doi.

2.  Tabele de pagina.
Testarea si conversia adreselor de pagina se poate face printr-un mecanism specific: Adresa virtuala este compusa din numarul paginii si un offset in cadrul acesteia. Numarul paginii poate fi impartit in mai multe cimpuri, fiecare folosit drept index pentru adresarea unui descriptor intr un tabel cu structura arborescenta, ale carui frunze corespund descriptorilor de pagina. Continutul descriptorului de pagina este folosit pentru a testa prezenta unei pagini in memorie si pentru a oferi bitii cei mai semnificativi ai adresei fizice de memorie, in timp ce offsetul ii ofera pe cei mai putin semnificativi.
Numarul de niveluri ale arborelui de conversie a adresei constituie un parametru important. Cu cit acest numar de niveluri este mai mare, cu atit timpul consumat pentru obtinerea decriptorului de pagina este mai mare. In acelasi timp, tabela cu structura arborescenta permite sistemului sa implementeze strategii de alocare a memoriei puternice si flexibile. De exemplu devine comoda folosirea in comun a aceluiasi subarbore de catre diferite procese, deci implementarea structurilor de date comune si a procedurilor comune este imediata. Intrucit zonele comune au un descriptor unic pentru fiecare pagina, actualizarea continutului acestuia ca urmare a incarcarii sau evacuarii nu este mai complicata decit pentru paginile care nu sint comune. Desi corecta, schema necesita unele modificari care sa o faca apta pentru o implementare eficienta. Principala problema consta in stabilirea tabelului de paginare (PGT): daca pentru fiecare program se aloca un spatiu de adrese virtuale separat, este necesar un PGT pentru fiecare program. De regula, spatiul virtual este mult mai mare decit spatiul fizic, deci si numarul paginilor si al descriptorilor asociati este mare. In consecinta, nu este posibila implementarea unei memorii mari si rapide in acelasi circuit integrat in care se afla MMU, memorie ce ar servi efectuarii, fara o degradare marcata, a operatiilor descrise.
Si in acest caz solutia problemei consta in ierarhizarea memoriei. Pe placheta de siliciu a MMU se realizeaza o memorie mica, dar rapida, in care se pastreaza descriptorii celor mai recent utilizate pagini. Pe durata unei faze a programului referirile sint axate pe un mic grup de pagini, deci descriptorul de pagina corespunzator adresei emise de catre CPU se afla, de cele  mai multe ori, in memoria MMU, si doar arareori este necesar a recurge la memoria principala pentru a prelua un descriptor de pagina din PGT.
Memoria cache de mici dimensiuni a MMU destinata stocarii descriptorului este organizata ca o memorie adresabila prin continut (CAM   content addressable memory), deoarece adresele acestei memorii nu mai sint legate de numarul de pagina, intrucit ea memoreaza descriptorii de pagina cel mai recent utilizati.
O alta implementare, utilizata adesea in calculatoare mari, de tipul IBM 370, se bazeaza pe o memorie CAM mai mare, care are alocat un cuvint pentru fiecare bloc de memorie: fiecare bloc din CAM contine descriptorul paginii stocate in blocul corespunzator al memoriei sau o indicatie ca blocul este vid. Descriptorul de pagina: cimpul adresei baza a fost inlocuit de cimpul numarului paginii. Numarul paginii, emis de catre CPU, este utilizat ca intrare in memoria CAM ce contine descriptorii paginilor continute in memoria principala. Iesirea este constituita de adresa cuvintului din CAM in care se gaseste descriptorul respectiv, sau o indicatie ca pagina nu este prezenta in memorie. Daca pagina se afla in memorie, iesirea memoriei CAM furnizeaza direct bitii cei mai semnificativi ai adresei fizice. Desi mai rapida, aceasta solutie necesita o memorie CAM mai mare. De asemenea, schema permite realizarea de spatii de adresare distincte pentru fiecare program doar daca, la fiecare comutare de procese, are loc salvarea/restaurarea continutului memoriei CAM. In cazul schemei anterior descrise, mecanismul de gestiune a memoriei cache aduce descriptorii in aceasta imediat ce ei devin necesari.

3. Segmentarea cu paginare
Exista multe similaritati intre segmenatre si paginare. Astfel, este posibil de a dispune de o tehnica de gestiune a memoriei care combina caracteristicile celor doua metode, ceea ce conduce la o tehnica oferind alocarea simpla specifica paginarii, ca si calitatile de protectie a memoriei specifice segmentarii. In acest caz programatorul divizeaza intregul spatiu virtual in segmentele reflectind structura logica a programului, ca in cazul segmentarii, apoi, fiecare segment este considerat drept constind dintr un numar de pagini, ca in cazul paginarii, asa ca alocarea memoriei continua sa opereze cu elemente de lungime fixa. Mecanismele hardware necesare sint aceleasi ca pentru paginarea pura. Totusi, se constata o crestere a fragmentarii, ca urmare a faptului ca, in cazul paginarii, numai ultima pagina ramine, eventual, incompleta. La combinatia segmentare paginare numarul de pagini partial utilizate este egal cu numarul de segmente, intrucit se exclude folosirea in comun a unei pagini de catre diferite segmente.